perm filename FAK15A.SAI[DOC,TOB] blob sn#234928 filedate 1976-08-31 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00003 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002
C00007 00003	WHILE TRUE DO BEGIN "ERR_BLOCK"
C00009 ENDMK
C⊗;
comment
	this version of fake finds the angular and position
	errors for the edge operator as a function of step height,
	position, and angle;
comment
	conf=sqrt(s0sq/(s0sq+n0sq)) ie cosine
	diff=s0sq;

BEGIN "EDGE_TEST"

DEFINE SAFE_ARRAY=1;	comment this makes all arrays safe;
comment REQUIRE "VISION.2[SYS,TOB]" SOURCE_FILE; comment vision language package;
comment 
	this is the header for the vision language packages;

comment REQUIRE "STD.7[SYS,TOB]" SOURCE_FILE;
REQUIRE "STD.14[S1,TOB]" SOURCE_FILE;
comment DEFINE IF_COMPILED_STD=1;
REQUIRE "HELIB[1,3]" LIBRARY;

REQUIRE "VARIAB.1[SYS,TOB]" SOURCE_FILE;
REQUIRE "WINDOW.3[SYS,TOB]" SOURCE_FILE;
REQUIRE "EDGE.2[SYS,TOB]" SOURCE_FILE;
REQUIRE "EDGEP.2[SYS,TOB]" SOURCE_FILE;
REQUIRE "RANDOM.2[SYS,TOB]" SOURCE_FILE;
REQUIRE "STEP.6[SYS,TOB]" SOURCE_FILE;
REQUIRE "STAT.1[SYS,TOB]" SOURCE_FILE;
comment DEFINE WINDOW_FILE=⊂"WINDOW.3[SYS,TOB]" SOURCE_FILE⊃;
comment DEFINE EDGE_FILE=⊂"EDGE.2[SYS,TOB]" SOURCE_FILE⊃;
comment DEFINE EDGE_PRINT=⊂"EDGEP.2[SYS,TOB]" SOURCE_FILE⊃;
comment DEFINE TV_VARIABLES=⊂"VARIAB.1[SYS,TOB]" SOURCE_FILE⊃;
comment DEFINE RANDOM_FILE=⊂"RANDOM.2[SYS,TOB]" SOURCE_FILE⊃;

comment DEFINE FAKE_FILE=⊂"STEP.6[SYS,TOB]" SOURCE_FILE⊃;
comment DEFINE STATISTICS_FILE=⊂"STAT.1[SYS,TOB]" SOURCE_FILE⊃;

DEFINE OP2="1";
DEFINE OP1="0";
IFCR OP1 AND OP2 THENC REDEFINE OP2=0;ENDC;
IFCR OP1 THENC DEFINE NBHD_FAKE=6;ENDC;
IFCR OP2 THENC DEFINE NBHD_FAKE=8;ENDC;

comment REQUIRE "SPACEA.2[S1,TOB]" SOURCE_FILE;
comment REQUIRE "WINDOW.11I[S1,TOB]" SOURCE_FILE;
comment REQUIRE "WINDF.11[S1,TOB]" SOURCE_FILE;
IFCR OP1 THENC
REQUIRE "OP1[S1,TOB]" LOAD_MODULE;
ENDC;
IFCR OP2 THENC
REQUIRE "OP2[S1,TOB]" LOAD_MODULE;
ENDC;
comment REQUIRE "VARIAB.3I[S1,TOB]" SOURCE_FILE;
comment REQUIRE "EDGE.5[S1,TOB]" SOURCE_FILE;
comment REQUIRE "EDGEP.5[S1,TOB]" SOURCE_FILE;
comment REQUIRE "RANDOM.2[S1,TOB]" SOURCE_FILE;
comment REQUIRE "GAUSS.4[S1,TOB]" SOURCE_FILE;
comment REQUIRE EDGE_FILE;
comment REQUIRE EDGE_PRINT;
comment REQUIRE TV_VARIABLES;
comment REQUIRE FAKE_FILE;	! file for fake edges;
comment REQUIRE STATISTICS_FILE; ! file for mean and standard deviation;


MODIFY(BITS);
EJINIT;	! init Hueckel operator;
WHILE YES("TEST EDGE OPERATOR? ") DO BEGIN "TST_LOOP"
  REAL ALPHA,DELTA;
  ASK_FAKE;
  FAKE;
  OP_APPLY(NBHD_FAKE/2,NBHD_FAKE/2); ! try the edge operator on it;
  ERROR_FAKE(ALPHA,DELTA);  ! get angle and perpend distance errors;
  TCRLF;PRINT(ALPHA);PRINT(DELTA);
  TCRLF;PRINT(THETA_FAKE);PRINT(RHO_FAKE);
  END "TST_LOOP";
WHILE TRUE DO BEGIN "ERR_BLOCK"
  INTEGER K;
  INTEGER ENOUGH;
  ENOUGH←2000;
  MODIFY(ENOUGH);
  ASK_FAKE;
  NOISE_EDGE←NOISE_FAKE;
  ASK_EDGE; ! ask for values for edge operator cutoffs;
  BEGIN "ERR_A"
    REAL_ARRAY VALUE[1:2];
    REAL_ARRAY MEAN[1:2];
    REAL_ARRAY STD_DEV[1:2];
    DEFINE α=1;
    DEFINE β=2;

    SIMPLE PROCEDURE VAL;
    comment funarg called by NRMS_STAT;
    WHILE TRUE DO BEGIN
      FAKE;
      IF EJLI(NBHD_FAKE/2,NBHD_FAKE/2,0,0)∧¬BCOMP THEN BEGIN
        ERROR_FAKE(VALUE[α],VALUE[β]);
        RETURN;
        END;
      END;

    NRMS_STAT(VALUE,MEAN,STD_DEV,VAL,ENOUGH,50);
    comment obtain mean and std deviations for variables in arrays
      2 variables, ENOUGH samples, report every 50 samples;
    OUTSTR(CRLF&"MEAN AND STANDARD DEVIATION---ALPHA & DELTA "&CRLF);
    OUTSTR(CVG(MEAN[α]));OUTSTR(CVG(STD_DEV[α])&CRLF);
    OUTSTR(CVG(MEAN[β]));OUTSTR(CVG(STD_DEV[β])&CRLF);
    END "ERR_A";
  END "ERR_BLOCK";
END "EDGE_TEST";